package com.girant.logger.entity.vo.show;

import cn.idev.excel.annotation.ExcelProperty;
import cn.idev.excel.annotation.format.DateTimeFormat;
import cn.idev.excel.annotation.write.style.ColumnWidth;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.girant.dict.annotation.DictLabel;
import lombok.Data;

//日常日志Excel导出（出参）
@Data
public class LogExportVO {
    @JsonProperty("操作用户ID")
    @ColumnWidth(20)
    private String operationUser;

    //操作用户账号
    @ExcelProperty(value = "操作用户账号")
    @ColumnWidth(20)
    private String operationUsername;

    // 操作用户昵称
    @ExcelProperty(value = "操作用户昵称")
    @ColumnWidth(20)
    private String operationNickname;

    //访问来源IP
    @ExcelProperty(value = "来源IP")
    private String sourceIp;

    //操作时间（带格式化）
    @ExcelProperty(value = "操作时间")
    @DateTimeFormat("yyyy-MM-dd HH:mm:ss.SSS") // 匹配字段的时间格式
    private String operationTime;

    // 客户端类型标签（中文描述）
    @ExcelProperty(value = "客户端类型")
    @ColumnWidth(20)
    private String clientTypeLabel;

    // 客户端浏览器
    @ExcelProperty(value = "客户端浏览器")
    @ColumnWidth(20)
    private String clientBrowser;

    //客户端版本
    @ExcelProperty(value = "客户端版本")
    @ColumnWidth(20)
    private String clientVersion;

    // 业务分类标签（中文描述）
    @ExcelProperty(value = "业务分类")
    @ColumnWidth(20)
    private String categoryLabel;

    //操作标题
    @ExcelProperty(value = "操作标题")
    @ColumnWidth(20)
    private String title;

    //操作内容详情
    @ExcelProperty(value = "操作内容详情")
    @ColumnWidth(20)
    private String content;

    //日志级别

    @ExcelProperty(value = "日志级别")
    @ColumnWidth(20)
    private String logLevel;

   //字典：sysLogServerName
    @ExcelProperty(value = "服务器名称标签")
    @ColumnWidth(20)
    private String serverName;

    //服务名称代码(字典字典：sysLogServerName)
    @ExcelProperty(value = "服务名称代码")
    @ColumnWidth(20)
    @DictLabel(dictCode = "sysLogServerName")
    private String serverNameLabel;

    // 分布式追踪ID
    @ExcelProperty(value = "追踪ID")
    @ColumnWidth(20)
    private String traceId;

    //分布式跨度ID
    @ExcelProperty(value = "跨度ID")
    @ColumnWidth(20)
    private String spanId;

    //异常堆栈信息（仅错误日志有值）
    @ExcelProperty(value = "异常堆栈信息")
    @ColumnWidth(20)
    private String stackTrace;

    //请求参数
    @ExcelProperty(value = "请求参数")
    @ColumnWidth(20)
    private String requestParams;
}
